package com.offcn.mapper;

import com.offcn.bean.Blog;

import java.util.List;
import java.util.Map;

public interface BlogMapper {
    // 新增博客
    int addBlog(Blog blog);

    // 根据作者和博客名字来查询博客，如果作者的名字为空，
    // 那么只根据博客的名字查询，反之，根据作者名字查询
    List<Blog> queryBlog(Map map);

    // 应用xml文件中应用<where>标签纠正sql语句
    List<Blog> queryBlog2(Map map);

    // swich标签进行条件选择
    List<Blog> queryBlogChoose(Map map);

    // sql标签：增加代码的复用性，简化代码
    List<Blog> queryBlog3(Map map);

    // foreache标签 将数据库中的前3个id修改为1,2,3
    //需求:我们需要查询blog表中的id分别为1,2,3的博客信息
    List<Blog> queryBlogForeach(Map map);

    // 一级缓存默认开启（SqlSession级别，也称为本地缓存）
    List<Blog> queryBlog4(int id);

    // 一级缓存失效1：存在不同的sqlsession
    List<Blog> queryBlog5(int id);

    // 一级缓存失效2：查询条件不一样
    List<Blog> queryBlog6(int id);

    // 一级缓存失效3：在你查询数据完以后，接着执行删除，修改的操作，那么一级缓存也会失效

    // 一级缓存失效4：手动清除缓存
    List<Blog> queryBlog7(int id);

    // 二级缓存：
    /*
    二级缓存是基于我们的namespace级别的，
    工作机制：
    一个会话查询一条数据，这个数据就会放到一级缓存中的，如果当前的会话关闭了，这个会话对应的一级缓存就没了，但是，我们想要的是
    ，会话关闭了没有问题，但是数据别丢，一级缓存缓存的数据就会保存在二级缓存中。
    新建的会话查询信息，就可以从二级缓存中的获取内容，不同的mapper查处的数据就会放到自己对应的缓存中，
    */
    List<Blog> queryBlog8(int id);




}
